define(["jquery", "bootstrap", "backend", "table", "form"], function ($, undefined, Backend, Table, Form) {
  var Controller = {
    index: function () {
      // 初始化表格参数配置
      Table.api.init({
        extend: {
          index_url: "fssy/nurseinfo/index" + location.search,
          add_url: "fssy/nurseinfo/add",
          edit_url: "fssy/nurseinfo/edit",
          del_url: "fssy/nurseinfo/del",
          multi_url: "fssy/nurseinfo/multi",
          import_url: "fssy/nurseinfo/import",
          table: "fssy_nurseinfo",
        },
      });

      var table = $("#table");

      // 初始化表格
      table.bootstrapTable({
        url: $.fn.bootstrapTable.defaults.extend.index_url,
        pk: "id",
        sortName: "id",
        fixedColumns: true, // 启用固定列功能
        fixedRightNumber: 1, // 设置右侧固定列的数量为1
        searchFormVisible: true, // 是否始终显示搜索表单
        columns: [
          [
            { checkbox: true },
            {
              field: "id",
              title: __("Id"),
            },
            {
              field: "dictsdepartment.department",
              title: __("科室"),
              formatter: Table.api.formatter.label,
            },
            {
              field: "name",
              title: __("Name"),
              operate: "LIKE",
            },
            {
              field: "gender_data",
              title: __("Gender_data"),
              searchList: {
                男: __("Gender_data 男"),
                女: __("Gender_data 女"),
              },
              formatter: Table.api.formatter.label,
            },
            {
              field: "birth_date",
              title: __("Birth_date"),
              operate: "RANGE",
              addclass: "datetimerange",
              autocomplete: false,
            },
            {
              field: "age",
              title: __("年龄(计算)"),
            },
            {
              field: "dictsjobtitle.jobtitle",
              title: __("职称"),
              operate: "LIKE",
            },
            // 聘任职称
            {
              field: "dictsusejobtitle.jobtitle",
              title: __("聘任职称"),
              operate: "LIKE",
              formatter: Table.api.formatter.label,
            },
            // 初学历
            {
              field: "dictsiniteducationbak.educationbak",
              title: __("Initl_education"),
              operate: "LIKE",
            },
            // 学历
            {
              field: "dictseducationbak.educationbak",
              title: __("Education"),
              operate: "LIKE",
              formatter: Table.api.formatter.flag,
            },
            // 参加工作时间
            {
              field: "start_work_date",
              title: __("Start_work_date"),
              operate: "RANGE",
              addclass: "datetimerange",
              autocomplete: false,
            },
            // 工作年限
            {
              field: "work_years",
              title: __("工作年限(计算)"),
              // formatter: Table.api.formatter.label,
              cellStyle: function (value, row, index) {
                return { css: { color: "red" } };
              },
            },
            {
              field: "hospital_start_date",
              title: __("Hospital_start_date"),
              operate: "RANGE",
              addclass: "datetimerange",
              autocomplete: false,
            },
            // 入院年限
            {
              field: "hospital_years",
              title: __("在院年限(计算)"),
              formatter: Table.api.formatter.label,
            },
            // 是否在职
            {
              field: "on_job",
              title: __("在职"),
              searchList: {
                在职: __("在职"),
                离职: __("离职"),
              },
              formatter: Table.api.formatter.label,
            },
            // 离职时间
            {
              field: "off_job_date",
              title: __("离职时间"),
              operate: "RANGE",
              addclass: "datetimerange",
              autocomplete: false,
            },
            {
              field: "operator",
              title: __("操作员"),
              operate: "LIKE",
              cellStyle: function (value, row, index) {
                return { css: { color: "#FF790D", "font-weight": "bold" } };
              },
            },
            {
              field: "createtime",
              title: __("Createtime"),
              operate: "RANGE",
              addclass: "datetimerange",
              autocomplete: false,
              formatter: Table.api.formatter.datetime,
              visible: false,
            },
            {
              field: "updatetime",
              title: __("Updatetime"),
              operate: "RANGE",
              addclass: "datetimerange",
              autocomplete: false,
              formatter: Table.api.formatter.datetime,
              sortable: true,
            },
            {
              field: "operate",
              title: __("Operate"),
              table: table,
              events: Table.api.events.operate,
              formatter: Table.api.formatter.operate,
            },
          ],
        ],
      });

      $(document).ready(function () {
        // 获取id=btn-generate-table的点击事件
        $("#btn-generate-table").click(function () {
          console.log("点击了 ............");
          $.ajax({
            url: "fssy/nurseinfo/generatetable",
            type: "POST",
            data: {},
            success: function (res) {
              console.log(res);
              res.msg === "OK" ? Layer.alert("生成成功", { icon: 1 }) : Layer.alert("生成失败", { icon: 2 });
            },
            error: function (jqXHR, textStatus, errorThrown) {
              console.log(textStatus, errorThrown);
            },
          });
        });
      });

      // 为表格绑定事件
      Table.api.bindevent(table);
    },

    // add: function () {
    //     $(document).ready(function () {
    //         console.log("add ............");

    //         // #c-age, #c-work_years, #c-hospital_years 验证 不能大于100
    //         $("#c-age, #c-work_years, #c-hospital_years").blur("input", function () {
    //             var age = $("#c-age").val();
    //             var work_years = $("#c-work_years").val();
    //             var hospital_years = $("#c-hospital_years").val();
    //             if (age > 100) {
    //                 Layer.alert("年龄 不能大于100");
    //                 return false;
    //             }
    //             if (work_years > 100) {
    //                 Layer.alert("工作年限 不能大于100");
    //                 return false;
    //             }
    //             if (hospital_years > 100) {
    //                 Layer.alert("入院年限 不能大于100");
    //                 return false;
    //             }
    //         });

    //         // #add-btn 点击事件
    //         $("#add-btn").click(
    //             function () {
    //                 var age = $("#c-age").val();
    //                 var work_years = $("#c-work_years").val();
    //                 var hospital_years = $("#c-hospital_years").val();
    //                 if (age > 100) {
    //                     Layer.alert("年龄 不能大于100");
    //                     return false;
    //                 }
    //                 if (work_years > 100) {
    //                     Layer.alert("工作年限 不能大于100");
    //                     return false;
    //                 }
    //                 if (hospital_years > 100) {
    //                     Layer.alert("入院年限 不能大于100");
    //                     return false;
    //                 }
    //             }
    //         );
    //     });

    //     Controller.api.bindevent();
    // },

    // edit: function () {
    //     $(document).ready(function () {
    //         console.log("edit ............");

    //         // #c-age, #c-work_years, #c-hospital_years 验证 不能大于100
    //         $("#c-age, #c-work_years, #c-hospital_years").blur("input", function () {
    //             var age = $("#c-age").val();
    //             var work_years = $("#c-work_years").val();
    //             var hospital_years = $("#c-hospital_years").val();
    //             if (age > 100) {
    //                 Layer.alert("年龄 不能大于100");
    //                 return false;
    //             }
    //             if (work_years > 100) {
    //                 Layer.alert("工作年限 不能大于100");
    //                 return false;
    //             }
    //             if (hospital_years > 100) {
    //                 Layer.alert("入院年限 不能大于100");

    //                 return false;
    //             }
    //         });

    //         // #edit-btn 点击事件
    //         $("#edit-btn").click(
    //             function () {
    //                 var age = $("#c-age").val();
    //                 var work_years = $("#c-work_years").val();
    //                 var hospital_years = $("#c-hospital_years").val();
    //                 if (age > 100) {
    //                     Layer.alert("年龄 不能大于100");
    //                     return false;
    //                 }
    //                 if (work_years > 100) {
    //                     Layer.alert("工作年限 不能大于100");
    //                     return false;
    //                 }
    //                 if (hospital_years > 100) {
    //                     Layer.alert("入院年限 不能大于100");
    //                     return false;
    //                 }
    //             }
    //         );
    //     });
    //     Controller.api.bindevent();
    // },

    add: function () {
      $(document).ready(function () {
        // 初始化时根据在职状态设置离职日期输入框的启用状态
        updateOffJobDateInput();

        // 监听在职状态单选按钮的变化
        $('input[name="row[on_job]"]').change(function () {
          updateOffJobDateInput();
        });

        function updateOffJobDateInput() {
          var selectedValue = $('input[name="row[on_job]"]:checked').val();
          if (selectedValue === "在职") {
            $("#c-off_job_date").prop("disabled", true);
            $("#c-off_job_date").val(""); // 清空离职日期输入框的值
          } else {
            $("#c-off_job_date").prop("disabled", false);
          }
        }

        $("#add-btn").click(function () {
          console.log("点击了 ............");
          if ($('input[name="row[on_job]"]:checked').val() === "离职" && $("#c-off_job_date").val() === "") {
            Layer.alert("离职日期不能为空");
            return false;
          }
        });
      });

      Controller.api.bindevent();
    },

    edit: function () {
      $(document).ready(function () {
        // 获取离职时间
        var offJobDate = $("#c-off_job_date").val();
        // 初始化时根据在职状态设置离职日期输入框的启用状态
        updateOffJobDateInput();

        // 监听在职状态单选按钮的变化
        $('input[name="row[on_job]"]').change(function () {
          updateOffJobDateInput();
        });

        function updateOffJobDateInput() {
          var selectedValue = $('input[name="row[on_job]"]:checked').val();
          if (selectedValue === "在职") {
            $("#c-off_job_date").prop("disabled", true);
            $("#c-off_job_date").val(null); // 清空离职日期输入框的值
          } else {
            $("#c-off_job_date").prop("disabled", false);
            $("#c-off_job_date").val(offJobDate);
          }
        }

        $("#edit-btn").click(function () {
          console.log("点击了 ............");
          if ($('input[name="row[on_job]"]:checked').val() === "离职" && $("#c-off_job_date").val() === "") {
            Layer.alert("离职日期不能为空");
            return false;
          }
        });
      });

      Controller.api.bindevent();
    },

    api: {
      bindevent: function () {
        Form.api.bindevent($("form[role=form]"));
      },
    },
  };

  // 计算年龄 函数
  function calculateAge(birthDate) {
    // 将字符串转换为日期对象
    const birthDateObj = new Date(birthDate);
    const today = new Date();

    // 计算年份差
    let age = today.getFullYear() - birthDateObj.getFullYear();

    // 调整年龄，如果今年的生日还没过
    const monthDifference = today.getMonth() - birthDateObj.getMonth();
    if (monthDifference < 0 || (monthDifference === 0 && today.getDate() < birthDateObj.getDate())) {
      age--;
    }

    return age;
  }

  // 计算 年月 函数

  function calculateYearMonth(startDate, endDate) {
    const start = new Date(startDate);
    const end = new Date(endDate);

    if (isNaN(start.getTime()) || isNaN(end.getTime())) {
      return "0年0月";
    }

    let years = end.getFullYear() - start.getFullYear();
    let months = end.getMonth() - start.getMonth();

    if (months < 0) {
      years--;
      months += 12;
    }

    let result = years + "年" + months + "月";

    return result;
  }

  // 提取的验证函数
  function validateFields() {
    console.log("validateFields ..........");
    var age = $("#c-age").val();
    var work_years = $("#c-work_years").val();
    var hospital_years = $("#c-hospital_years").val();

    if (age > 100) {
      Layer.alert("年龄 不能大于100");
      return false;
    }
    if (work_years > 100) {
      Layer.alert("工作年限 不能大于100");
      return false;
    }
    if (hospital_years > 100) {
      Layer.alert("入院年限 不能大于100");
      return false;
    }
    return true; // 验证通过
  }

  return Controller;
});
